Modul 4 von 12 · 📖 11 min Lesezeit · ⏱ 30 min gesamt
FI-DV 04 MQTT und Sparkplug B
Inhaltsverzeichnis (6 Abschnitte)
FI-DV 04 MQTT und Sparkplug B
MQTT (Message Queuing Telemetry Transport) ist ein leichtgewichtiges Publish/Subscribe-Protokoll, das für die effiziente Übertragung von Daten in vernetzten Systemen konzipiert wurde. In diesem Modul erlernen Sie die Grundlagen der MQTT-Architektur, verstehen die verschiedenen Quality-of-Service-Levels und beherrschen den Umgang mit Retained Messages. Sie erhalten Einblicke in Sicherheitskonzepte für MQTT-Installationen und lernen die Spezifika des Sparkplug B-Standards zur Standardisierung von Industrieanwendungen kennen.
Die praktische Anwendung steht im Fokus: Sie konfigurieren einen MQTT-Broker, implementieren Client-Anwendungen und integrieren Sparkplug B für die nahtlose Kommunikation zwischen Geräten und Anwendungen. Nach Abschluss dieses Moduls sind Sie in der Lage, MQTT-basierte Lösungen für die industrielle Automatisierung und IoT-Anwendungen zu planen und umzusetzen.
Konzepte und Hintergrund
- MQTT-Broker
- Die zentrale Instanz, die alle Nachrichten von Publishern entgegennimmt und an die entsprechenden Subscriber weiterleitet. Der Broker verwaltet die Topics und stellt die Verbindung zwischen den Clients her.
- Quality of Service (QoS)
- Drei Stufen (0, 1, 2), die die Zuverlässigkeit der Nachrichtenübertragung definieren. QoS 0 bietet "at most once"-Lieferung, QoS 1 "at least once" und QoS 2 "exactly once" mit erhöhtem Overhead.
- Retained Messages
- Vom Broker gespeicherte Nachrichten, die an neue Subscriber gesendet werden, die sich für ein Topic anmelden. Dies stellt sicher, dass neue Clients sofort den aktuellen Zustand erhalten.
- Sparkplug B
- Ein Open-Standard, der MQTT um semantische Strukturen erweitert. Er definiert ein festes Topic-Format und Nachrichtenschema für die Überwachung, Steuerung und Datenakquisition in industriellen Anwendungen.
- Willow-Way-Topic-Hierarchie
- Die standardisierte Topic-Struktur von Sparkplug B, die eine klare Trennung zwischen Metadaten (NDATA), Nutzdaten (DDATA) und Befehlen (CMD) ermöglicht und eine hierarchische Organisation der Geräte ermöglicht.
Architektur-Diagramm
flowchart TD
A[Edge Device] -->|Publish/Subscribe| B[MQTT Broker]
C[SCADA System] -->|Subscribe| B
D[Historian] -->|Subscribe| B
E[IIoT Platform] -->|Publish/Subscribe| B
F[Human Machine Interface] -->|Subscribe| B
B -->|Sparkplug B| G[Application Server]
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style G fill:#bfb,stroke:#333,stroke-width:2px
Praktische Schritte
- Installieren Sie den Eclipse Mosquitto MQTT-Broker auf einem Linux-System mit dem Befehl
. Dies stellt die Grundinfrastruktur für die MQTT-Kommunikation bereit.sudo apt install mosquitto mosquitto-clients - Konfigurieren Sie die Sicherheit des Brokers, indem Sie eine Passwortdatei mit
erstellen und die Konfiguration inmosquitto_passwd -c /etc/mosquitto/passwortfile benutzername
anpassen. Dies schützt den Broker vor unbefugtem Zugriff.listener 1883 allow_anonymous false password_file /etc/mosquitto/passwortfile - Erstellen Sie eine Testumgebung mit zwei Terminals: Eines für den Publisher (
) und eines für den Subscriber (mosquitto_pub -h localhost -u benutzername -P passwort -t test/topic -m "Hallo MQTT"
). Dies verifiziert die grundlegende Funktionsfähigkeit.mosquitto_sub -h localhost -u benutzername -P passwort -t test/topic - Implementieren Sie Sparkplug B-Kompatibilität, indem Sie die Bibliothek
installieren und ein Node-Birth-Paket mitpip install sparkplugbpayload
erstellen. Dies initialisiert ein Sparkplug-fähiges Gerät.from sparkplugbpayload import SparkplugBPayload payload = SparkplugBPayload("NBIRTH") payload.add_metric("Node Control/Rebirth", "boolean", False) payload.serialize() - Konfigurieren Sie Retained Messages für kritische Zustandsdaten mit
. Dies stellt sicher, dass neue Clients sofort den aktuellen Gerätestatus erhalten.mosquitto_pub -r -t device/status -m "online" - Testen Sie die verschiedenen QoS-Levels, indem Sie Nachrichten mit
,mosquitto_pub -q 0 -t qos/test -m "QoS 0"
undmosquitto_pub -q 1 -t qos/test -m "QoS 1"
senden und das Verhalten im Subscriber beobachten. Dies hilft bei der Auswahl des passenden QoS für Ihre Anwendung.mosquitto_pub -q 2 -t qos/test -m "QoS 2"
Häufige Fallstricke
Weiterführende Ressourcen
- OASIS MQTT 5.0 Spezifikation - Die offizielle Dokumentation des MQTT-Standards
- Sparkplug B Spezifikation - Die vollständige Spezifikation des Sparkplug B-Standards
- Mosquitto Konfigurationsdokumentation - Detaillierte Erklärungen aller Konfigurationsparameter
- Eclipse Mosquitto GitHub Repository - Quellcode und zusätzliche Ressourcen
- HiveMQ MQTT QoS Guide - Umfassende Erklärung der QoS-Levels mit praktischen Beispielen
Wissens-Check
Vier Fragen zur Selbstkontrolle. Klicken Sie jede Frage an, um die richtige Antwort und Erklärung zu sehen.
Was ist die Hauptaufgabe eines MQTT-Brokers in einem Publish/Subscribe-System?
- A) Die Datenverschlüsselung aller Nachrichten sicherstellen
- B) Nachrichten von Publishern entgegennehmen und an passende Subscriber weiterleiten
- C) Die Authentifizierung aller Clients im Netzwerk durchführen
- D) Die Datenpersistenz für alle Nachrichten garantieren
Richtige Antwort: B. Der Broker fungiert als Vermittler, der Nachrichten basierend auf den Topics an die entsprechenden Subscriber weiterleitet. Die anderen Optionen sind zwar wichtige Aspekte von MQTT-Systemen, aber nicht die Hauptaufgabe des Brokers.
Welcher Quality-of-Service-Level garantiert "exactly once"-Lieferung bei MQTT?
- A) QoS 0
- B) QoS 1
- C) QoS 2
- D) QoS 3
Richtige Antwort: C. QoS 2 stellt sicher, dass jede Nachricht genau einmal an den Empfänger gelangt, allerdings mit dem höchsten Overhead. QoS 0 bietet "at most once"-Lieferung, QoS 1 "at least once", und es gibt keinen QoS 3 in MQTT.
Was ist der Hauptzweik von Retained Messages in MQTT?
- A) Die Last auf dem Broker durch Nachrichtenpufferung reduzieren
- B) Neue Subscriber sofort mit dem aktuellen Zustand eines Topics versorgen
- C) Die Verbindung zwischen Clients bei Unterbrechung wiederherstellen
- D) Die Sicherheit durch Verschlüsselung aller gespeicherten Nachrichten erhöhen
Richtige Antwort: B. Retained Messages stellen sicher, dass neue Subscriber, die sich für ein Topic anmelden, sofort den aktuellen Zustand erhalten. Die anderen Optionen beschreiben andere MQTT-Konzepte oder sind nicht die Hauptfunktion von Retained Messages.
Was ist der wesentliche Vorteil des Sparkplug B-Standards im Vergleich zum Standard-MQTT?
- A) Höhere Übertragungsgeschwindigkeit durch Komprimierung
- B) Erweiterung um semantische Strukturen und standardisierte Topic-Formate
- C) Geringeren Speicherbedarf auf dem Broker
- D) Einfachere Implementierung für kleine Geräte
Richtige Antwort: B. Sparkplug B erweitert MQTT um semantische Strukturen und definiert ein festes Topic-Format und Nachrichtenschema, was die Interoperabilität in industriellen Anwendungen verbessert. Die anderen Optionen sind nicht die Kernvorteile von Sparkplug B.